package huawei_nowcoder;

import java.util.*;

/**
 * @Description: 数据分类处理
 * @Date: 2020/4/17
 * @Author: 许群星
 */
public class _24_DataClassify {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            //数据初始化
            int a = sc.nextInt();
            int[] I = new int[a];
            for (int i = 0; i < a; i++) {
                I[i] = sc.nextInt();
            }
            int b = sc.nextInt();
            int[] R = new int[b];
            for (int i = 0; i < b; i++) {
                R[i] = sc.nextInt();
            }

            //数据处理
            List<Integer> list = new LinkedList<>();
            List<Integer> listR = new LinkedList<>();

            //R排序 放入到listR中
            Arrays.sort(R);
            for (int i = 0; i < b; i++) {
                if (!listR.contains(R[i]))
                    listR.add(R[i]);
            }
//            System.out.println("listR---"+listR);
            //遍历listR
            for (int it : listR
            ) {
                String childN = String.valueOf(it);
                //记录对应规则的I[i]
                List<Integer> haha = new LinkedList<>();
                for (int i = 0; i < a; i++) {
                    String temp = String.valueOf(I[i]);
                    if (temp.contains(childN)) {
                        haha.add(i);
                        haha.add(I[i]);
                    }
                }
                //根据haha是否为空判断是否有符合规则的数
                if (haha == null || haha.size() <= 0)
                    continue;
                else {
                    list.add(it);
                    list.add(haha.size() / 2);
                    list.addAll(haha);
                }
            }

            System.out.print(list.size() + " ");
            //注意字符串的结尾没有空格，这个判断要加上，否则会不通过 会多余打印
            for (int i = 0; i < list.size(); i++) {
                if (i==list.size()-1)
                    System.out.println(list.get(i));
                else
                    System.out.print(list.get(i) + " ");
            }
        }
    }
}
/*
题目描述
信息社会，有海量的数据需要分析处理，比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录。
采集输入大数据和分类规则，通过大数据分类处理程序，将大数据分类输出。
输入描述:
﻿一组输入整数序列I和一组规则整数序列R，I和R序列的第一个整数为序列的个数（个数不包含第一个整数）；整数范围为0~0xFFFFFFFF，序列个数不限

输出描述:
﻿从R依次中取出R<i>，对I进行处理，找到满足条件的I<j>：

I<j>整数对应的数字需要连续包含R<i>对应的数字。比如R<i>为23，I<j>为231，那么I<j>包含了R<i>，条件满足 。

按R<i>从小到大的顺序:

(1)先输出R<i>；

(2)再输出满足条件的I<j>的个数；

(3)然后输出满足条件的I<j>在I序列中的位置索引(从0开始)；

(4)最后再输出I<j>。

附加条件：

(1)R<i>需要从小到大排序。相同的R<i>只需要输出索引小的以及满足条件的I<j>，索引大的需要过滤掉

(2)如果没有满足条件的I<j>，对应的R<i>不用输出

(3)最后需要在输出序列的第一个整数位置记录后续整数序列的个数(不包含“个数”本身)



序列I：15,123,456,786,453,46,7,5,3,665,453456,745,456,786,453,123（第一个15表明后续有15个整数）

序列R：5,6,3,6,3,0（第一个5表明后续有5个整数）

输出：30,
    3,--
    6,      0,123,3,453,7,3,9,453456,13,453,14,123,
    6, --
    7,      1,456,2,786,4,46,8,665,9,453456,11,456,12,786

说明：

30----后续有30个整数

3----从小到大排序，第一个R<i>为0，但没有满足条件的I<j>，不输出0，而下一个R<i>是3

6--- 存在6个包含3的I<j>

0--- 123所在的原序号为0

123--- 123包含3，满足条件

示例1
输入
复制
15 123 456 786 453 46 7 5 3 665 453456 745 456 786 453 123
5 6 3 6 3 0
输出
复制
30 3 6 0 123 3 453 7 3 9 453456 13 453 14 123 6 7 1 456 2 786 4 46 8 665 9 453456 11 456 12 786


24 7907 610 4359 55 812 3002 10706 2470 8332 8573 3840 8105 9213 10159 11882 6517 7357 6398 4586 215 3420 4927 7159 9414
10 85 122 46 55 110 47 77 119 50 58

16 47 1 7 2470 55 1 3 55 58 1 18 4586 85 1 9 8573

16 47 1 7 2470 55 1 3 55 58 1 18 4586 85 1 9 8573 12 4 3 1 4598 3 6047 6 7402 26 1 5 11269
 */